home *** CD-ROM | disk | FTP | other *** search
/ HamCall (April 1991) / HAMCALL CD-ROM (Buckmaster)(April 1991).BIN / amateur / bbsqth / os.h next >
Text File  |  1990-10-14  |  2KB  |  145 lines

  1. /*{IO.INC  -  I/O & timer routines }
  2. {This version requires COM/QUAD BIOS resident!}
  3. {Also DVTIMER!}
  4. */
  5. #include <dos.h>
  6. #define DESQ 0x15
  7.     union REGS regs;
  8.     char    comport;
  9.  
  10.  
  11. DV_Nice()          /*Give time slice to next task*/
  12. {
  13.     regs.h.al = 0;
  14.     regs.h.ah = 0x10;
  15.     int86(DESQ, ®s, ®s);
  16. };
  17.  
  18. DV_Crit()          /*hog time slice */
  19. {
  20.     regs.x.ax = 0x101B;
  21.     int86(DESQ, ®s, ®s);
  22. };
  23.  
  24. DV_Uncrit()          /*Give time slice to next task*/
  25. {
  26.     regs.x.ax = 0x101C;
  27.     int86(DESQ, ®s, ®s);
  28. };
  29.  
  30.  
  31.  
  32. char statusSIO()
  33.  
  34. /* Returns true if character is ready from the serial port */
  35.  
  36. {
  37.     regs.x.ax = 0x0300;  /*get status*/
  38.     regs.x.dx = comport;
  39.     int86(0x14,®s,®s);
  40.     return((regs.x.ax & 0x0100) != 0);
  41. };
  42.  
  43.  
  44. outSIO(char ch)
  45.  
  46. {
  47.     regs.x.ax = 0x0100 + ch; /*send char*/
  48.     regs.x.dx = comport;
  49.     int86(0x14,®s,®s);
  50. };
  51.  
  52.  
  53.  
  54. char inSIO()
  55.  
  56. {
  57.     regs.x.ax = 0x0200;  /*get char*/
  58.     regs.x.dx = comport;
  59.     int86(0x14,®s,®s);
  60.     return(regs.h.al);
  61. };
  62.  
  63.  
  64.  
  65. char ckSIO()
  66.  
  67.   {
  68.     regs.x.ax = 0x0800;  /*get char - leave in buffer*/
  69.     regs.x.dx = comport;
  70.     int86(0x14,®s,®s);
  71.     return(regs.h.al);
  72.   };
  73.  
  74.  
  75.  
  76. char DCD()        /*TRUE if CONNECTED*/
  77.  
  78.   {
  79.     regs.x.ax = 0x0300;  /*get status*/
  80.     regs.x.dx = comport;
  81.     int86(0x14,®s,®s);
  82.     return((regs.x.ax & 0x0080) != 0);
  83.   };
  84.  
  85.  
  86. send_breakSIO()
  87.  
  88.   {
  89.     regs.x.ax = 0x0700;  /*send break*/
  90.     regs.x.dx = comport;
  91.     int86(0x14,®s,®s);
  92.   };
  93.  
  94. dropdtr()
  95.  {
  96.     int i;
  97.         for (i=0;i<8;i++){
  98.             if(ports[1] == 1){
  99.                 regs.x.ax = 0x0500;  /* drop rts */
  100.                 regs.x.dx = i;
  101.                 int86(0x14,®s,®s);
  102.             }
  103.     }
  104.  }
  105.  
  106. raisedtr()
  107.  {
  108.     int i;
  109.         for (i=0;i<8;i++){
  110.             if(ports[i] == 1){
  111.                 regs.x.ax = 0x0600;  /* raise rts */
  112.                 regs.x.dx = i;
  113.                 int86(0x14,®s,®s);
  114.             }
  115.     }
  116.  }
  117.  
  118. setTIMER(int i)  /*Set # of seconds before timeout*/
  119.  
  120.   {
  121.     regs.h.ah = 0x01;  /*set timer*/
  122.     regs.x.cx = i;
  123.     regs.x.dx = comport + 0xF0;    /*which timer*/
  124.     int86(0x14,®s,®s);
  125.   };
  126.  
  127.  
  128. int getTIMER()
  129.  
  130.   {
  131.     regs.h.ah = 0x00;  /*read timer*/
  132.     regs.x.dx = comport + 0xF0;    /*which timer*/
  133.     int86(0x14,®s,®s);
  134.     return(regs.x.ax);
  135.   };
  136.  
  137.  
  138. char Timeout()  /*True if Timer = 0*/
  139.  
  140.   {
  141.     return(getTIMER == 0);
  142.   };
  143.  
  144.  
  145.